package create.prototype;

/**
 * 原型模式
 * 是用于创建重复的对象，同时又能保证性能。
 * <p>
 * 这种模式是实现了一个原型接口，该接口用于创建当前对象的克隆。
 * 当直接创建对象的代价比较大时，则采用这种模式。
 * <p>
 * 例如，一个对象需要在一个高代价的数据库操作之后被创建。
 * 我们可以缓存该对象，在下一个请求时返回它的克隆，在需要的时候更新数据库，以此来减少数据库调用。
 *
 * @author yeyangtao
 * @date 2020/6/2 19:16
 */
public class Demo {
    public static void main(String[] args) {
        ShapeCache.loadCache();

        Shape cloneShape = ShapeCache.getShape("1");
        System.out.println("shape:" + cloneShape.getType());

        Shape cloneShape2 = ShapeCache.getShape("2");
        System.out.println("shape:" + cloneShape2.getType());
    }
}
